---
sidebar_label: Multiple mutations in a request
sidebar_position: 5
description: Run multiple mutations in a request in Hasura
keywords:
  - hasura
  - docs
  - mutation
  - multiple mutations
  - request
---

import GraphiQLIDE from '@site/src/components/GraphiQLIDE';

# Multiple Mutations in a Request

## Execution

If multiple mutations are part of the same request, they are executed **sequentially** in a single **transaction**. If
any of the mutations fail, all the executed mutations will be rolled back.

:::info Note

In requests where a [Remote Schema](/remote-schemas/overview.mdx) or [Action](/actions/overview.mdx) is present, and a
mutation fails, rollback is not possible. Any mutations executed before the failed mutation will still succeed.

:::

## Run multiple top level mutations in the same request

**Example:** Delete all `article` objects written by an author and update the `author` object:

<GraphiQLIDE
  query={`mutation reset_author {
  delete_article (
    where: {author_id: {_eq: 6}}
  ) {
    affected_rows
  }
  update_author (
    where: {id: {_eq: 6}}
    _set: {name: "Cory"}
  ) {
    returning {
      id
      name
      articles {
        id
        title
      }
    }
  }
}`}
  response={`{
  "data": {
    "delete_article": {
      "affected_rows": 2
    },
    "update_author": {
      "returning": [
        {
        "id": 6,
        "name": "Cory",
        "articles": []
        }
      ]
    }
  }
}`}
/>

## Insert an object and a nested object in the same mutation

If you are trying to insert multiple objects which have relationships between them, you can use nested inserts.

**Example:** Insert a new `article` object with its `author` and return the inserted article object with its author in
the response:

<GraphiQLIDE
  query={`mutation insert_article {
  insert_article(
    objects: [
      {
        title: "Article 1",
        content: "Sample article content",
        author: {
          data: {
            name: "Cory"
          }
        }
      }
    ]
  ) {
    affected_rows
    returning {
      id
      title
      author {
        id
        name
      }
    }
  }
}`}
  response={`{
  "data": {
    "insert_article": {
      "affected_rows": 2,
      "returning": [
        {
          "id": 21,
          "title": "Article 1",
          "author": {
            "id": 11,
            "name": "Cory"
          }
        }
      ]
    }
  }
}`}
/>
